package com.swancloud.model.network.v20210120.fwaas;

import java.util.List;

import com.swancloud.common.Buildable;
import com.swancloud.model.ModelEntity;
import com.swancloud.model.network.v20210120.fwaas.builder.FirewallBuilder;
import com.swancloud.openstack.networking.v20210120.domain.ext.fwaas.NeutronFirewall;

/**
 * <p>Networking (Neutron) FwaaS Firewall Extension API.</p>
 *
 * <p>Represents a logical firewall resource that a tenant can instantiate and manage. A firewall is associated with one firewall policy.</p>
 *
 * @author Vishvesh Deshmukh
 */
public interface Firewall extends ModelEntity, Buildable<FirewallBuilder> {
	/**
	 *
	 * @return id : Unique identifier for the firewall.
	 */
	public String getId();

	/**
	 *
	 * @return name : Human readable name for the firewall (255 characters limit). Does not have to be unique.
	 */
	public String getName();

	/**
	 *
	 * @return tenantId : Owner of the Firewall. Only an administrative user can
	 *         specify a tenant ID other than its own.
	 */
	public String getTenantId();

	/**
	 * @return projectId: The ID of the project that owns the resource.
	 */
	public String getProjectId();

	/**
	 *
	 * @return description : Human readable description for the firewall (1024 characters limit).
	 */
	public String getDescription();

	/**
	 *
	 * @return adminstateup :  The administrative state of the firewall,
	 *         which is up (true) or down (false).
	 */
	public Boolean isAdminStateUp();

	/**
	 *
	 * @return shared :  When set to True makes this firewall rule visible to tenants other
	 * 					 than its owner, and can be used in firewall policies not owned by its tenant.
	 */
	public Boolean isShared();

	/**
	 * @see NeutronFirewall.FirewallStatus
	 *
	 * @return status The status of the health monitor. Indicates whether the
	 *         health monitor is operational.
	 */
	public NeutronFirewall.FirewallStatus getStatus();

	/**
	 *
	 * @return ingressPolicyId : The ID of the ingress firewall policy for the firewall group.
	 */
	public String getIngressPolicyId();

	/**
	 *
	 * @return egressPolicyId : The ID of the egress firewall policy for the firewall group.
	 */
	public String getEgressPolicyId();

	/**
	 *
	 * @return ports : A list of the IDs of the ports associated with the firewall group.
	 */
	public List<String> getPortIds();
}
